import logging

from rest_framework import viewsets, mixins

from BYD_ERP.utils.base_views import MultipleDestroyMixin, MultipleAuditMixin
from BYD_ERP.utils.pagination import GlobalPagination
from goods_info.models import GoodsModel
from production_info.models import BomMaterialModel, BomProcessModel
from production_info.serializer.bom_serializer import BomMaterialSerializer, BomProcessSerializer, GoodsBomSerializer

logger = logging.getLogger('my')


class BomMaterialView(mixins.CreateModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin,
                      mixins.RetrieveModelMixin, viewsets.GenericViewSet, MultipleDestroyMixin, MultipleAuditMixin):
    """
        create:
        BOM生产物料--新增，注意：其中images_list="1,2,3,4"；里面是附件的ID

        BOM生产物料新增，status：201（成功），return：新增BOM生产物料信息

        destroy:
        BOM生产物料--删除

        BOM生产物料删除，status：204（成功），return：None

        multiple_delete:
        BOM生产物料--批量删除，必传参数：ids=[1,2,3,4,...]

        BOM生产物料批量删除，status：204（成功），return：None

        update:
        BOM生产物料--修改，注意：其中images_list="1,2,3,4"；里面是附件的ID

        BOM生产物料修改，status：200（成功），return：修改后的BOM生产物料信息

        retrieve:
        根据ID查询某一个BOM生产物料

        查询指定ID的BOM生产物料，status：200（成功），return：指定BOM生产物料

    """
    queryset = BomMaterialModel.objects.all()
    serializer_class = BomMaterialSerializer
    pagination_class = GlobalPagination


class BomProcessView(mixins.CreateModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin,
                     mixins.RetrieveModelMixin, viewsets.GenericViewSet, MultipleDestroyMixin, MultipleAuditMixin):
    """
        create:
        BOM生产工序--新增，注意：其中images_list="1,2,3,4"；里面是附件的ID

        BOM生产工序新增，status：201（成功），return：新增BOM生产工序信息

        destroy:
        BOM生产工序--删除

        BOM生产工序删除，status：204（成功），return：None

        multiple_delete:
        BOM生产工序--批量删除，必传参数：ids=[1,2,3,4,...]

        BOM生产工序批量删除，status：204（成功），return：None

        update:
        BOM生产工序--修改，注意：其中images_list="1,2,3,4"；里面是附件的ID

        BOM生产工序修改，status：200（成功），return：修改后的BOM生产工序信息

        retrieve:
        根据ID查询某一个BOM生产工序

        查询指定ID的BOM生产工序，status：200（成功），return：指定BOM生产工序

    """
    queryset = BomProcessModel.objects.all()
    serializer_class = BomProcessSerializer
    pagination_class = GlobalPagination


class GoodsBomViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet):
    """
        retrieve:
        查询某一个货品的BOM表数据（包含：BOM表中物料清单和工序清单）

        包含BOM表中物料清单和工序清单，status：200（成功），return：BOM表

    """
    queryset = GoodsModel.objects.all()
    serializer_class = GoodsBomSerializer
    pagination_class = GlobalPagination